package admin_image_api

import (
	"blog_go/models"
	"blog_go/models/ctype"
	"blog_go/models/res"
	"blog_go/service/common"
	"github.com/gin-gonic/gin"
	"github.com/jinzhu/copier"
	"time"
)

type ImagesListRsp struct {
	ID        uint            `json:"id"`         // 主键id
	CreatedAt time.Time       `json:"created_at"` // 创建时间 默认datetime(3)
	Path      string          `json:"path"`       // 图片的路劲
	Hash      string          `json:"hash"`       // 图片的hash值用于判断重复
	Name      string          `json:"name"`       // 图片名称
	ImageType ctype.ImageType `json:"image_type"` // 图片类型在本地还是七牛
}

// ImagesList 图片列表
// @Tags 图片管理
// @Summary 图片列表
// @Description 图片列表
// @Param params query models.PageInfo true "入参"
// @Param token header string true "token"
// @Router /api/admin/image/list [get]
// @Produce json
// @Success 200 {object} res.Response{data=res.ListResponse[[]ImagesListRsp]}
func (AdminImageAPI) ImagesList(c *gin.Context) {
	page := models.DefaultPageInfo()
	err := c.ShouldBindQuery(&page)
	if err != nil {
		panic(res.ParamError)
	}
	/*offset := (page.Page - 1) * page.Limit
	if offset < 0 {
		offset = 0
	}
	if page.Limit < 1 {
		page.Limit = 999
	}
	// 总条数
	var count int64
	// 这样写会执行两条sql,一个select * 一个select count
	//global.DB.Find(&bannerList).Count(&count)
	// 这样就只有一select count语句
	global.DB.Model(&models.BannerModel{}).Count(&count)
	// limit 0 查询不出来的
	global.DB.Offset(offset).Limit(page.Limit).Find(&bannerList)
	res.OkWithList(bannerList, count, c)*/
	list, count, _ := common.ComList(models.ImageModel{}, page)
	var rspList []ImagesListRsp
	for _, model := range list {
		var rsp ImagesListRsp
		copier.Copy(&rsp, &model)
		rspList = append(rspList, rsp)
	}
	res.OkWithList(rspList, count, c)
	return
}
